package com.cloudfun.campusshare.service;

import com.cloudfun.campusshare.common.constant.WashPointType;
import com.cloudfun.campusshare.common.model.vo.*;
import com.cloudfun.campusshare.common.response.BaseResult;
import com.cloudfun.campusshare.common.response.PageResult;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Set;

/**
 * @author : zhangyongjie
 * @version : 1.0
 * @createTime : 2020/4/28 19:26
 * @description :
 */
public interface WashPointService {
    /**
     * 新增洗衣点
     *
     * @param washPointAddVO
     */
    void addWashPoint(WashPointAddVO washPointAddVO);

    /**
     * 查询洗衣点列表
     *
     * @param pageable
     * @param keyword
     * @return
     */
    PageResult queryWashPointList(Pageable pageable, String keyword, Set<WashPointType> type, String operatorId);

    /**
     * 查询洗衣点列表（非分页）
     *
     * @param keyword
     * @param operatorId
     * @return
     */
    List<WashPointForQueryListVO> getWashPointList(String keyword, String operatorId);

    /**
     * 删除洗衣点
     *
     * @param washPointId
     */
    void deleteWashPoint(String washPointId);

    /**
     * 洗衣点详情
     *
     * @param washPointId
     * @return
     */
    WashPointDetailVO queryWashPointDetail(String washPointId);

    /**
     * 导出洗衣点
     *
     * @return
     */
    List<WashPointExportVO> exportWashPoint(Set<String> washPointIds,
                                            String keyword,
                                            Boolean all,
                                            String userId);


    /**
     * @param type
     * @return
     */
    UserPickWashPointListVO getUserPickList(WashPointType type,
                                            String longitude,
                                            String latitude);

    /**
     * 补货模块下拉选
     * 管理员首先查询运营商列表，然后根据选择运营商动态展示场地名称
     * 运营商不展示 运营商下拉选列表，直接展示自己管理的所有场地名称
     * 根据selectKey查询所属的下拉选列表
     * @param selectKey
     * @return
     */
    BaseResult getSelectInfo(String selectKey,String value);
}
